-- @Author: 作者QQ381990860
-- @Date:   2021-11-05 10:34:34
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-07-23 06:59:04

local 坐骑类 = class()
local bd ={"体质","魔力","力量","耐力","敏捷"}
local tp,zts,zts1
local insert = table.insert
local mouseb = 引擎.鼠标弹起
local box = 引擎.画矩形
local zqs1 = {"名称","等级","体质","魔力","力量","耐力","敏捷"}
local zqs2 = {"成  长","环境度","好感度","饱食度"}
local zqs3 = {"获得经验","升级经验"}
function 坐骑类:初始化(根)
  self.ID = 148
  self.x = 0
  self.y = 0
  self.xx = 0
  self.yy = 0
  self.注释 = "坐骑"
  self.可视 = false
  self.鼠标 = false
  self.焦点 = false
  self.可移动 = true
  local 资源 = 根.资源
  local 按钮 = 根._按钮
  local 自适应 = 根._自适应
  tp = 根
	self.资源组 = {
	[1] = 自适应.创建(0,1,385,465,3,9),
	[2] = 按钮.创建(自适应.创建(18,4,16,16,4,3),0,0,4,true,true),
	[3] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"骑乘"),
	[4] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"装饰"),
	[5] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"观看"),
	[6] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"修炼"),
	[7] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"驯养"),
	[8] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"喂养"),
	[9] = 按钮.创建(自适应.创建(11,4,55,20,1,3),0,0,4,true,true,"放生"),
	[10] = 按钮.创建(自适应.创建(11,4,75,20,1,3),0,0,4,true,true,"更改属性"),
	[11] = 按钮.创建(资源:载入('llm.dll',"网易WDF动画",0xB15C5678),0,0,4,true,true,"查看技能"),
	[12] = 按钮.创建(自适应.创建(31,4,10,13,4,3),0,0,4,true,true), --上
	[13] = 按钮.创建(自适应.创建(32,4,10,13,4,3),0,0,4,true,true),--下
	[14] = 按钮.创建(自适应.创建(31,4,10,13,4,3),0,0,4,true,true), --上
	[15] = 按钮.创建(自适应.创建(32,4,10,13,4,3),0,0,4,true,true),--下
	[16] = 按钮.创建(自适应.创建(11,4,43,20,1,3),0,0,4,true,true,"改名"),
	[17] = 自适应.创建(2,1,158,150,3,9),
	[18] = 自适应.创建(7,1,160,105,3,9),
  [19] = 自适应.创建(8,1,160,125,3,9),
	[20] = 自适应.创建(3,1,41,18,1,3),
	}
	for n=2,16 do
	   self.资源组[n]:绑定窗口_(148)
	end
	self.资源组[11]:置偏移(0,2)

   	self.加点按钮={}
   	self.减点按钮={}
   	self.临时潜力 = {体质=0,魔力=0,力量=0,耐力=0,敏捷=0}
	for n = 1, 5, 1 do
		self.加点按钮[n] = 按钮.创建(自适应.创建(25,4,19,19,4,3),0,0,4,true,true)
		self.减点按钮[n] =  按钮.创建(自适应.创建(26,4,19,19,4,3),0,0,4,true,true)
	end

   	self.选中编号 = 0
   	self.窗口时间 = 0

	self.控件类 = require("ggeui/加载类")()
	local 总控件 = self.控件类:创建控件('商店总控件')
	总控件:置可视(true,true)
	self.名称输入框 = 总控件:创建输入("数量输入016",self.x + 333,self.y + 82,120,14)
	self.名称输入框:置可视(false,false)
	self.名称输入框:置限制字数(16)
	self.名称输入框:置光标颜色(-16777216)
	self.名称输入框:置文字颜色(-16777216)
  zts = tp.字体表.普通字体
  zts1 = tp.字体表.描边字体

end

function 坐骑类:打开(数据)
	if self.可视 then
		self.可视 = false
		 self.选中编号 = 0
		 self.人物动画=nil
		 self.名称输入框:置焦点(false)
		self.名称输入框:置可视(false,false)
		self.坐骑动画=nil
		self.坐骑饰品=nil
		self.临时潜力 = {体质=0,魔力=0,力量=0,耐力=0,敏捷=0}
	else
		self.坐骑饰品=nil
		if  self.x > 全局游戏宽度 then
		self.x = 0
		end
		self.名称输入框:置可视(true,true)
		self.人物动画=nil
		self.坐骑动画=nil
		self.临时潜力 = {体质=0,魔力=0,力量=0,耐力=0,敏捷=0}
		 self.选中编号 = 0
        self.坐骑= 数据.坐骑
        self.坐骑数据 = 数据.坐骑数据
        for n = 1, #self.坐骑数据, 1 do
		self.坐骑数据[n].包围盒 = require("gge包围盒")(320, 240 + n * 20,string.len(self.坐骑数据[n].名称) * 9, 18)
		end

		insert(tp.窗口_,self)
	    tp.运行时间 = tp.运行时间 + 1
	    self.窗口时间 = tp.运行时间
	    self.可视 = true
	end
end
function 坐骑类:刷新(数据)
		self.临时潜力 = {体质=0,魔力=0,力量=0,耐力=0,敏捷=0}
        self.坐骑= 数据.坐骑
        self.坐骑数据 = 数据.坐骑数据
        for n = 1, #self.坐骑数据, 1 do
		self.坐骑数据[n].包围盒 = require("gge包围盒")(320, 240 + n * 20,string.len(self.坐骑数据[n].名称) * 9, 18)
		end
		if self.选中编号~=0 then
		  self:创建动画()
		end
end
function 坐骑类:创建动画()

	self.坐骑饰品=nil
	if self.选中编号~= 0 then
	
	   	local 资源组 = 引擎.坐骑库(tp.场景.人物.数据.造型,self.坐骑数据[self.选中编号].类型,self.坐骑数据[self.选中编号].饰品 or "空")
		self.人物动画=tp.资源:载入(资源组.人物资源,"网易WDF动画",资源组.人物站立)
		self.坐骑动画=  tp.资源:载入(资源组.坐骑资源,"网易WDF动画",资源组.坐骑站立)
   		if self.坐骑数据[self.选中编号].染色组 then
   			self.坐骑动画:置染色(self.坐骑数据[self.选中编号].类型,self.坐骑数据[self.选中编号].染色组[1],self.坐骑数据[self.选中编号].染色组[2],self.坐骑数据[self.选中编号].染色组[3])
   		end

		if 资源组.坐骑饰品站立 ~= nil then
		self.坐骑饰品 = tp.资源:载入(资源组.坐骑饰品资源,"网易WDF动画",资源组.坐骑饰品站立)
			 if self.坐骑数据[self.选中编号].装备.染色组 then
			    self.坐骑饰品:置染色(self.坐骑数据[self.选中编号].装备.名称,self.坐骑数据[self.选中编号].装备.染色组[1],self.坐骑数据[self.选中编号].装备.染色组[2],self.坐骑数据[self.选中编号].装备.染色组[3])
			 end
    	 self.坐骑饰品:置方向(0)
		end
		
		self.人物动画:置染色(DyeData[tp.场景.人物.数据.造型][1],tp.场景.人物.数据.染色.a,tp.场景.人物.数据.染色.b,tp.场景.人物.数据.染色.c,0)
		self.人物动画:置方向(0)
		self.坐骑动画:置方向(0)
		if self.坐骑.编号 ~= self.选中编号 then
			self.人物动画 = nil
		end
	end

end

function 坐骑类:显示(dt,x, y)
	for n = 1, #self.坐骑数据, 1 do
		if self.坐骑数据[n].包围盒:检查点(x, y) and 引擎.鼠标弹起(0) then
			self.选中编号 = n
			self.名称输入框:置文本( self.坐骑数据[n].名称)
			self:创建动画()

		end
	end

	if self.坐骑动画 ~= nil then
		self.坐骑动画:更新(dt)
	end

	if self.人物动画 ~= nil then
		self.人物动画:更新(dt)
	end
		if self.坐骑饰品 ~= nil then
		self.坐骑饰品:更新(dt)
	end

	self.资源组[3]:更新(x,y,self.选中编号~=0)
	self.资源组[4]:更新(x,y,self.选中编号~=0)
	self.资源组[5]:更新(x,y,self.选中编号~=0)
	self.资源组[6]:更新(x,y,self.选中编号~=0)
	self.资源组[7]:更新(x,y,self.选中编号~=0)
	self.资源组[8]:更新(x,y,self.选中编号~=0)
	self.资源组[9]:更新(x,y,self.选中编号~=0)
	self.资源组[16]:更新(x,y,self.选中编号~=0)
	self.资源组[12]:更新(x,y)
	self.资源组[13]:更新(x,y)
	self.资源组[14]:更新(x,y)
	self.资源组[15]:更新(x,y)
	self.资源组[11]:更新(x,y,self.选中编号~=0)
	self.资源组[2]:更新(x,y)
	self.资源组[10]:更新(x,y,self.选中编号~=0)
	self.焦点=false
	if self.资源组[3]:事件判断() then
		if self.选中编号 == 0 then
			tp.提示:写入("#y/请先选择一只坐骑")
		else
			客户端:发送数据(self.选中编号, 6, 48, "9", 1)
		end
	elseif self.资源组[7]:事件判断() then
		if self.选中编号 == 0 then
			tp.提示:写入("#y/请先选择一只坐骑")
		else
			客户端:发送数据(self.选中编号, 6, 49, "9", 1)
		end
	elseif self.资源组[16]:事件判断() then
		if self.选中编号 == 0 then
			tp.提示:写入("#y/请先选择一只坐骑")
		else
			客户端:发送数据(self.选中编号, 6, 58, self.名称输入框:取文本())
		end
	elseif self.资源组[9]:事件判断() then
		if self.选中编号 == 0 then
			tp.提示:写入("#y/请先选择一只坐骑")
		else
		tp.窗口.文本栏:载入("#H/放生以后这个坐骑将会消失,你确定要执行?","坐骑",true)
		end
	elseif self.资源组[11]:事件判断() then
		tp.窗口.坐骑技能:打开(self.坐骑数据[self.选中编号])

	elseif self.资源组[10]:事件判断() then
		    客户端:发送数据(self.选中编号, 3, 50, self.临时潜力.力量.."*-*"..self.临时潜力.体质.."*-*"..self.临时潜力.魔力.."*-*"..self.临时潜力.耐力.."*-*"..self.临时潜力.敏捷, 1)
	elseif self.资源组[2]:事件判断() then
		self:打开()
	end



	self.资源组[1]:显示(self.x+100, self.y+50)
  self.资源组[2]:显示(self.x+485-20,self.y+53)
  tp.窗口标题背景_:显示(self.x+293-73,self.y+50)
  zts1:显示(self.x+293-30,self.y+51,"坐骑属性")



	self.资源组[17]:显示(self.x+113, self.y+75)
	self.资源组[18]:显示(self.x+113, self.y+256)
	self.资源组[19]:显示(self.x+113, self.y+372)
	zts:置颜色(0xFFFFFFFF):显示(self.x+129, self.y+375,"召唤兽       统驭")

	for i=0,6 do
		self.资源组[20]:置宽高(100,18)
		self.资源组[20]:显示(self.x+325,self.y+80+i*25)
		zts:置颜色(0xFFFFFFFF):显示(self.x+288,self.y+82+i*25,zqs1[i+1])
	end
	for i=0,3 do
		self.资源组[20]:置宽高(120,18)
		self.资源组[20]:显示(self.x+343,self.y+280+i*25)
		zts:置颜色(0xFFFFFFFF):显示(self.x+288,self.y+282+i*25,zqs2[i+1])
	end

	for i=0,1 do
		self.资源组[20]:置宽高(105,18)
		self.资源组[20]:显示(self.x+360,self.y+380+i*25)
		zts:置颜色(-1404907):显示(self.x+287,self.y+382+i*25,zqs3[i+1])
	end


		self.资源组[20]:置宽高(55,18)
		self.资源组[20]:显示(self.x+325,self.y+254)
		zts:置颜色(-1404907):显示(self.x+288,self.y+256,"潜能")

zts:置颜色(0xFFFFFFFF)
	self.资源组[3]:显示(self.x+105, self.y+230)
	self.资源组[4]:显示(self.x+165, self.y+230)
	self.资源组[5]:显示(self.x+225, self.y+230)
	self.资源组[6]:显示(self.x+290, self.y+440)
	self.资源组[7]:显示(self.x+350, self.y+440)
	self.资源组[8]:显示(self.x+410, self.y+440)
	self.资源组[9]:显示(self.x+315, self.y+473)
	self.资源组[10]:显示(self.x+390, self.y+253)
	self.资源组[11]:显示(self.x+380, self.y+470)

	self.资源组[12]:显示(self.x+262, self.y+257)
	self.资源组[13]:显示(self.x+262, self.y+348)

	self.资源组[14]:显示(self.x+262, self.y+396)
	self.资源组[15]:显示(self.x+262, self.y+484)

	self.资源组[16]:显示(self.x+430, self.y+80)
	if self.选中编号~=0 then
			if self.选中编号 == self.坐骑.编号 then
				self.资源组[3]:置文字("下骑")
			else
				self.资源组[3]:置文字("骑乘")
			end
		for n = 1, 5, 1 do
			self.加点按钮[n]:更新(x,y,self.坐骑数据[self.选中编号].潜能>0,1)
			self.减点按钮[n]:更新(x,y,self.临时潜力[bd[n]] > 0,1)

			if self.加点按钮[n]:事件判断() then
				self.临时潜力[bd[n]] = self.临时潜力[bd[n]] + 1
				self.坐骑数据[self.选中编号].潜能 =self.坐骑数据[self.选中编号].潜能 - 1
			elseif self.减点按钮[n]:事件判断() then
				self.临时潜力[bd[n]] = self.临时潜力[bd[n]] - 1
				self.坐骑数据[self.选中编号].潜能 = self.坐骑数据[self.选中编号].潜能 + 1
			end
		self.加点按钮[n]:显示(self.x+430, self.y+107 + n * 24)
		self.减点按钮[n]:显示(self.x+453, self.y+107 + n * 24)
		end
	end

	self.名称输入框:置坐标(self.x,self.y)
	for n = 1, #self.坐骑数据, 1 do
		if self.选中编号 == n then
			box(self.x+117,self.y +240 + n* 20 ,self.x + 250,self.y +240 +n * 20 + 20,-9670988)


			zts:置颜色(0xFF000000):显示(self.x+333, self.y+107, self.坐骑数据[n].等级)
			for i=1,5 do
				if self.临时潜力[bd[i]] > 0 then
					zts:置颜色(-65536)
				else
					zts:置颜色(-16777216)
				end
				zts:显示(self.x + 333,self.y + 132 + ((i-1)*25) ,self.坐骑数据[n][bd[i]]+self.临时潜力[bd[i]])
			end
			zts:置颜色(0xFF000000):显示(self.x+333, self.y+257, self.坐骑数据[n].潜能)
			zts:置颜色(0xFF000000):显示(self.x+353, self.y+282, self.坐骑数据[n].成长)
			zts:置颜色(0xFF000000):显示(self.x+353, self.y+307, self.坐骑数据[n].环境度)
			zts:置颜色(0xFF000000):显示(self.x+353, self.y+332, self.坐骑数据[n].好感度)
			zts:置颜色(0xFF000000):显示(self.x+353, self.y+357, self.坐骑数据[n].饱食度)
			zts:置颜色(0xFF000000):显示(self.x+363, self.y+382, self.坐骑数据[n].当前经验)
			zts:置颜色(0xFF000000):显示(self.x+363, self.y+407, self.坐骑数据[n].升级经验)
		end
		if self.坐骑.编号 == n then
			zts:置颜色(0xFFFFFF00):显示(self.x+120, self.y+243 + n * 20, self.坐骑数据[n].名称)
		else
		 	zts:置颜色(0xFF000000):显示(self.x+120, self.y+243 + n * 20, self.坐骑数据[n].名称)
		end

		self.坐骑数据[n].包围盒:置坐标(self.x+120, self.y+240 + n * 20)
	end

	if self.坐骑动画 ~= nil then
		tp.影子:显示(self.x+190, self.y+200)
		self.坐骑动画:显示(self.x+190, self.y+200)
		if self.坐骑饰品 ~= nil then
			self.坐骑饰品:显示(self.x+190, self.y+200)
		end
		if self.人物动画 ~= nil then
			self.人物动画:显示(self.x+190, self.y+200)
		end

	end
	self.控件类:更新(dt,x,y)
	if  self.名称输入框._已碰撞 then
		self.焦点 = true
	end
	self.控件类:显示(x,y)
end

function 坐骑类:检查点(x,y)
  if self.资源组[1]:是否选中(x,y)  then
    return true
  end
end

function 坐骑类:初始移动(x,y)
  tp.运行时间 = tp.运行时间 + 1
  self.窗口时间 = tp.运行时间
  if not self.焦点 then
    tp.移动窗口 = true
  end
  if self.鼠标 and  not self.焦点 then
    self.xx = x - self.x
    self.yy = y - self.y
  end
end

function 坐骑类:开始移动(x,y)
  if self.鼠标 then
    self.x = x - self.xx
    self.y = y - self.yy
  end
end
return 坐骑类
